#pragma once





#include "../C_数值插座.h"

#include <map>








struct S_Vec3Key {
	int32 x;
	int32 y;
	int32 z;
	bool operator<(const S_Vec3Key& keyA) const {
		return (x < keyA.x && y < keyA.y && z < keyA.z);
	}
};

class C_ivec3Map_UI32插座 : public C_插座基类 {
public:
	C_ivec3Map_UI32插座(std::string name);
	~C_ivec3Map_UI32插座();

	std::map<S_Vec3Key, uint32>	m_Value;

	void*		f_getData();
	void		f_setData(void* data, int64 ID = -1);
	PyObject*	f_输出_bl数据(PyObject* bl_data = 0);
};
#define DEF_转换为ivec3Map_UI32插座(socket) dynamic_cast<C_ivec3Map_UI32插座*>( (socket) )
#define DEF_取ivec3Map_UI32插座数据(socket) ((std::map<S_Vec3Key, uint32>*)(DEF_转换为ivec3Map_UI32插座( (socket) )->f_getData()))

#define DEF_ivec3Map_UI32插座创建_I(name)  socket = new C_ivec3Map_UI32插座( (name) ); f_add插座(socket, E_插座输出方向::e_插座Type_输入);
#define DEF_ivec3Map_UI32插座创建_O(name)  socket = new C_ivec3Map_UI32插座( (name) ); f_add插座(socket, E_插座输出方向::e_插座Type_输出);









class C_uint64Map插座_UI32_Array1D : public C_插座基类 {
public:
	C_uint64Map插座_UI32_Array1D(std::string name);
	~C_uint64Map插座_UI32_Array1D();

	std::map<uint64, std::vector<uint32>>	m_Value;

	void*		f_getData();
	void		f_setData(void* data, int64 ID = -1);
	
	PyObject*	f_输出_bl数据(PyObject* bl_data = 0);
};
#define DEF_转换为uint64Map_ArrayUI32插座(socket) dynamic_cast<C_uint64Map插座_UI32_Array1D*>( (socket) )
#define DEF_取uint64Map_ArrayUI32插座数据(socket) ((map<uint64, vector<uint32>>*)(DEF_转换为uint64Map_ArrayUI32插座( (socket) )->f_getData()))

#define DEF_uint64Map_ArrayUI32插座创建_I(name)  socket = new C_uint64Map插座_UI32_Array1D( (name) ); f_add插座(socket, E_插座输出方向::e_插座Type_输入);
#define DEF_uint64Map_ArrayUI32插座创建_O(name)  socket = new C_uint64Map插座_UI32_Array1D( (name) ); f_add插座(socket, E_插座输出方向::e_插座Type_输出);








